package com.spsoft.vatoutinv.model.vo.vmsmanualinvoice;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.spsoft.vatoutinv.constants.CommonConstant;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 手工开票-发票主信息返回数据
 *
 * @author : chenxudong
 * @date : 2023/11/30 13:23
 */
@Data
@ApiModel(value = "手工开票-发票主信息返回数据")
public class VmsManualBaseVo {

    @ApiModelProperty(value = "主键")
    private Long id;

    @ApiModelProperty(value = "手工开票申请表ID")
    private Long applyId;

    @ApiModelProperty(value = "发票票种;01：全电专 02：全电普")
    private String fppz;

    @ApiModelProperty(value = "金额模式;01：不含税 02：含税 默认不含税。可选不含税、含税。若差额征税类型代码不为空时，则仅支持使用不含税模式")
    private String jems;

    @ApiModelProperty(value = "差额征税类型代码;空：非差额发票 01：全额开票 02：差额开票")
    private String cezslxdm;

    @ApiModelProperty(value = "单号类型;01：投保单号；02：汇交单号；03学平险受单号")
    private String dhlx;

    @ApiModelProperty(value = "投保单号/汇交单号/学平险受单号;默认为可选择,可下拉选择，01：投保单号；02：汇交单号；03学平险受单号，选择类型后手工输入对应单号信息，长度不做限制")
    private String dh;

    @ApiModelProperty(value = "特定要素;非必填，默认为空,可下拉选择，01：成品油、02：稀土、03：建筑服务、04：货物运输、05：不动产销售、06：不动产租赁、07：代收车船使用税、08：通行费、09：旅客运输、10：医疗服务、11：农产品、12：拖拉机和联合收割机、13：机动车、14：光伏收购、15：卷烟")
    private String tdys;

    @ApiModelProperty(value = "购买方名称")
    private String gmfmc;

    @ApiModelProperty(value = "购买方纳税人识别号;若发票类型为“数电专票”，则为必填；若发票类型为“数电普票”，且其购买方名称含有“公司”、“事务所”等字眼时，则为必填；反之为非必填；限制录入26位英文大写和阿拉伯数字组合。")
    private String gmfnsrsbh;

    @ApiModelProperty(value = "销售方名称")
    private String xsfmc;

    @ApiModelProperty(value = "销售方纳税人识别号")
    private String xsfnsrsbh;

    @ApiModelProperty(value = "合计金额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal hjje;

    @ApiModelProperty(value = "合计税额")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal hjse;

    @ApiModelProperty(value = "价税合计")
    @JsonSerialize(using = ToStringSerializer.class)
    private BigDecimal jshj;

    @ApiModelProperty(value = "备注")
    private String bz;

    @ApiModelProperty(value = "开票人")
    private String kpr;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = CommonConstant.DATE_FORMAT_14, timezone = CommonConstant.TIMEZONE)
    private Date creatTime;

    @ApiModelProperty(value = "创建人")
    private String creatBy;

    @ApiModelProperty(value = "交易机构")
    private String qydjid;

    @ApiModelProperty(value = "更新时间")
    @JsonFormat(pattern = CommonConstant.DATE_FORMAT_14, timezone = CommonConstant.TIMEZONE)
    private Date updateTime;

    @ApiModelProperty(value = "更新人")
    private String updateBy;

    // 为了便于前端取数，增加此字段
    @ApiModelProperty(value = "购买方自然人标志;默认为否：01是；02否")
    private String gmfzrrbz;

}
